package com.hf.tcpdemo;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class ClientThread extends Thread{
    @Override
    public void run() {
        try {
            //创建客户端Socket
            // 第一个参数是服务器的地址：ip地址、服务器的局域网名等  127.0.0.1 localhost 表示本机
            // 第二个参数是服务器的端口号，需要和服务器保持一致
            Socket socket = new Socket("127.0.0.1",9902);
                //使用Socket和的服务端进行通信
                //---发送消息-----------------
                //获取输出流的对象
                BufferedWriter bufferedWriter = new BufferedWriter(
                        new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));
                //发送信息
                //String strMsg = "已接收";
                //从控制台读入
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入发送信息:");
                String strMsg = sc.nextLine();

                System.out.println("客户端："+strMsg);
                bufferedWriter.write(strMsg);
                //相当于一个换行符
                bufferedWriter.newLine();
                //自定义通信协议：消息发送使用 eof 作为结束标志位
                bufferedWriter.write("eof");
                bufferedWriter.write("\n");
                //清空输出流的发送区域，将信息发送到网络上
                bufferedWriter.flush();
                //////////////////////////////接收消息
                BufferedReader bufferedReader = new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
                //读取信息
                while(true) {
                    String str = bufferedReader.readLine();
                    //规定结束符
                    if (str != null && !str.equals("eof")){
                        //业务逻辑处理
                        System.out.println("服务器:"+str);
                    }else {
                        //终止循环读取信息
                        break;
                    }
                }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
